In [5]:
import pandas as pd
star_wars = pd.read_csv("https://raw.githubusercontent.com/fivethirtyeight/data/master/star-wars-survey/StarWars.csv", encoding="ISO-8859-1")
In [6]:
print(star_wars.head(3))
In [3]:
star_wars.columns
Out[3]:
In [7]:
star_wars = star_wars[pd.notnull(star_wars['RespondentID'])]
print(star_wars.head(3))
- Now we have all our dataframe with only rows with a valid ResponseID
Limpiando y mapeando una columna binaria Si/No ( Yes/No)¶
In [5]:
yes_no = {'Yes': True, "No": False}
have_you_see = 'Have you seen any of the 6 films in the Star Wars franchise?'
do_you_consider = 'Do you consider yourself to be a fan of the Star Wars film franchise?'
star_wars[have_you_see] = star_wars[have_you_see].map(yes_no)
star_wars[do_you_consider] = star_wars[do_you_consider].map(yes_no)
In [8]:
print(star_wars.head(3))
Limpiado y mapeando una columna multiopción.¶
In [9]:
import numpy as np
yes_no_episodes = {
"Star Wars: Episode I The Phantom Menace": True,
np.nan: False,
"Star Wars: Episode II Attack of the Clones": True,
"Star Wars: Episode III Revenge of the Sith": True,
"Star Wars: Episode IV A New Hope": True,
"Star Wars: Episode V The Empire Strikes Back": True,
"Star Wars: Episode VI Return of the Jedi": True
}
star_wars = star_wars.rename(columns = {
"Which of the following Star Wars films have you seen? Please select all that apply.": 'Seen 1',
"Unnamed: 4": 'Seen 2',
"Unnamed: 5": 'Seen 3',
"Unnamed: 6": 'Seen 4',
"Unnamed: 7": 'Seen 5',
"Unnamed: 8": 'Seen 6'
})
for col in star_wars.columns[3:9]:
star_wars[col] = star_wars[col].map(yes_no_episodes)
print(star_wars.head(3))
Ahora como se puede apreciar tenemso que substituir los nombre de las peliculas por “True” o “False” (Verdadero o falso) asi podremos contar cuantas visualizaciones tuvo cada pelicula.¶
Limpiando la columna “Rankings”¶
In [10]:
star_wars = star_wars.rename(columns = {
star_wars.columns[9]: "Ranking 1",
star_wars.columns[10]: "Ranking 2",
star_wars.columns[11]: "Ranking 3",
star_wars.columns[12]: "Ranking 4",
star_wars.columns[13]: "Ranking 5",
star_wars.columns[14]: "Ranking 6"
})
print(star_wars.head(3))
In [9]:
star_wars[star_wars.columns[9:15]] = star_wars[star_wars.columns[9:15]].astype(float)
Encontrando la pelicula con un Ranking mayor.¶
In [10]:
star_wars[star_wars.columns[9:15]].mean()
Out[10]:
In [11]:
%matplotlib inline
import matplotlib.pyplot as plt
plt.bar(range(6), star_wars[star_wars.columns[9:15]].mean())
Out[11]:
- En este momento, tenemos los datos limpios y tambien los rankings con sus medias. Gracias a esto podremos averiguar que pelicula tiene un ranking mas alto. Como podemos apreciar las peliculas mas viejas, 4 5 y 6 tienen una mejor clasificacion que llas primeras.
Encontrando la pelicula mas vista.¶
In [13]:
star_wars[star_wars.columns[3:9]].sum()
Out[13]:
In [14]:
plt.bar(range(6), star_wars[star_wars.columns[3:9]].sum())
Out[14]:
- Podemos apreciar que las pelicuas mas vistas son las mas viejas, tambien recordemos que las primeras fueron las que mas gustaron, como vimos previamente.
Explorando los datos por segmentos binarios.¶
In [17]:
male = star_wars[star_wars['Gender'] == 'Male']
female = star_wars[star_wars['Gender'] == 'Female']
plt.bar(range(6), male[male.columns[9:15]].mean())
plt.show()
plt.bar(range(6), female[female.columns[9:15]].mean())
plt.show()
In [19]:
plt.bar(range(6), male[male.columns[3:9]].sum())
plt.show()
plt.bar(range(6), male[male.columns[3:9]].sum())
plt.show()
Conclusión.¶
Podemos decir que tanto mujeres como hombres igualmente han visto las mismas peliculas por igual, es decir, no existe un sexo que se decante por una de las peliculas que por otra.
In [ ]: